using Abp.Application.Services.Dto;
using Mt.Site.Application.FileFinder.Dto;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.FileFinder
{
    public interface IFileLibraryAppService : IBackEndAppService
    {
        #region 文件操作

        Task DeleteFileFromLibraryAsync(EntityDto<long> input);

        Task<DirectoryItem> MoveToOtherDirectoryAsync(MoveOtherDirectoryInput input);

        Task<LibraryFileItem> UpdateFileItemAsync(UpdateFileItemInput input);

        #endregion

        #region 文件夹操作

        Task<DirectoryItem> CreateDirectoryAsync(CreateDirectoryInput input);

        Task<GetDirectoryForEditOut> GetDirectoryForEditAsync(EntityDto<Guid> input);

        Task<DirectoryItem> UpdateDirectoryAsync(UpdateDirectoryInput input);

        Task DeleteDirectoryAsync(EntityDto<Guid> input);

        Task UpSortDirectoryAsync(EntityDto<Guid> input);

        Task DownSortDirectoryAsync(EntityDto<Guid> input);

        Task MoveDirectoryAsync(MoveDirectoryInput input);

        #endregion

        #region 查询
        Task<FindDirectoryOutput> FindSubDirectoriesAsync(FindDirectoryInput input);

        Task<List<DirectoryItem>> GetDirectoriesForSelectionAsync();

        Task<PagedResultDto<LibraryFileItem>> FindFileListAsync(FindFileListInput input);

        #endregion
    }
}
